package com.ehome.manage.module.utils.process.node;

import lombok.Data;

/**
 * Node处理结果，用以控制流程的走向
 *
 * @author xiaxinye
 */
@Data
public class NodeResult {

    /**
     * 流程是否结束
     */
    private boolean finish;

    /**
     * 下一个节点的名字
     */
    private String nextNodeName;

    /**
     * 只允许通过静态工厂获取该类实例
     */
    private NodeResult() {
    }

    /**
     * 静态工厂：生成中间环节的处理结果
     *
     * @param nextNodeName 下一个节点的名字
     * @return NodeProcessResult
     */
    public static NodeResult next(String nextNodeName) {
        NodeResult result = new NodeResult();
        result.setFinish(false);
        result.setNextNodeName(nextNodeName);
        return result;
    }

    /**
     * 静态工厂：流程正常结束时终止节点的处理结果
     *
     * @return 处理结果
     */
    public static NodeResult finish() {
        NodeResult result = new NodeResult();
        result.setFinish(true);
        return result;
    }

}
